home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 27 / 64er_Magazin_Sonderheft_27_19xx_Markt__Technik_de_Disk_2_of_2_Side_B.d64 / matrixexpress v3 (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  15KB  |  833 lines

  1. 10 sys 32768
  2. 12 .opt p,m,oo
  3. 14 ;
  4. 20 ;-----------------------------------
  5. 200 offmac .mac a,b,c
  6. 202 lda a
  7. 204 sta $c1
  8. 206 lda b
  9. 208 sta $c2
  10. 210 ldy c
  11. 212 jsr offset
  12. 214 .men
  13. 218 ;----------------------------------
  14. 300 matfunk .mac sprzl,zahl
  15. 302 ldx #zahl
  16. 304 loop inc $7a
  17. 306 bne .less1
  18. 308 inc $7b
  19. 310 less1 dex
  20. 312 bne .loop
  21. 340 jsr sprzl
  22. 342 jmp $a7ae
  23. 344 .men
  24. 350 ;----------------------------------
  25. 352 text .mac textn
  26. 354 lda #<textn
  27. 355 sta $22
  28. 356 ldy #>textn
  29. 357 sty $23
  30. 359 jsr strout
  31. 360 .men
  32. 362 ;----------------------------------
  33. 370 cursor .mac zeile,spalte
  34. 372 ldx #zeile
  35. 374 ldy #spalte
  36. 376 stx $d6
  37. 378 sty $d3
  38. 380 jsr setcrs
  39. 382 .men
  40. 384 ;----------------------------------
  41. 804 ;
  42. 806 calc   = $c975 ; calc.-basis
  43. 808 lcalc  = <calc
  44. 810 hcalc  = >calc
  45. 812 lc8    = <calc+12
  46. 814 hc8    = >calc+12
  47. 816 lc13   = <calc+17
  48. 818 hc13   = >calc+17
  49. 820 lc18   = <calc+22
  50. 821 hc18   = >calc+22
  51. 822 lc23   = <calc+27
  52. 823 hc23   = >calc+27
  53. 824 komma  = $aefd
  54. 825 strout = $ab1e
  55. 826 chrget = $0073
  56. 828 chr(NULL)t = $0079
  57. 830 facabs = $bc58
  58. 832 cmpfac = $bc5b
  59. 834 mdiv   = $bb0f
  60. 836 intmul = $b34c
  61. 838 memfac = $bba2
  62. 840 facmem = $bbd7
  63. 842 ptrvar = $b0e7
  64. 844 msub   = $b850
  65. 846 madd   = $b867
  66. 848 mmult  = $ba28
  67. 850 ready  = $a474
  68. 852 aryget = $b194
  69. 854 scrtch = $a644
  70. 856 chrout = $ffd2
  71. 858 setcrs = $e56c
  72. 890 ;
  73. 892 *= $c000
  74. 894 ;
  75. 896 ;----------------------------------
  76. 900 lda #$0b
  77. 902 sta $0308     ; i(NULL)ne lo
  78. 904 lda #$c0
  79. 906 sta $0309     ; i(NULL)ne hi
  80. 907 jsr titel
  81. 908 rts
  82. 910 ;
  83. 912 jsr chrget
  84. 914 cmp #$40      ; ascii fuer @
  85. 916 beq neubef    ; neuer befehl
  86. 918 jmp $a7e7     ; kein neuer befehl
  87. 920 neubef jsr chrget
  88. 922 cmp #"a"
  89. 924 bne funk2
  90. 926 'matfunk add,$03
  91. 928 funk2 cmp #"e"
  92. 930 bne funk3
  93. 932 'matfunk equ,$03
  94. 934 funk3 cmp #"m"
  95. 936 bne funk4
  96. 938 'matfunk mul,$03
  97. 940 funk4 cmp #"d"
  98. 942 bne funk5
  99. 944 'matfunk det,$03
  100. 946 funk5 cmp #"i"
  101. 948 bne funk6
  102. 950 'matfunk inv,$03
  103. 952 funk6 cmp #"s"
  104. 954 bne funk8
  105. 960 jsr chrget
  106. 962 cmp #"u"
  107. 964 bne funk7
  108. 966 'matfunk sub,$02
  109. 968 funk7 'matfunk skp,$02
  110. 970 funk8 rts
  111. 999 ;----------------------------------
  112. 1000 ; equivalenz (a)=(b)
  113. 1002 ; ******************
  114. 1004 equ lda #$08
  115. 1006 sta $fb
  116. 1008 jsr aryfnd
  117. 1010 equiv lda #00
  118. 1012 sta $fc
  119. 1014 fl16 lda #00
  120. 1016 sta $fb
  121. 1018 fl15 lda calc
  122. 1020 ldy calc+1
  123. 1022 jsr memfac
  124. 1024 ldx calc+4
  125. 1026 ldy calc+5
  126. 1028 jsr facmem
  127. 1030 jsr eladd
  128. 1032 inc $fb
  129. 1034 lda $fb
  130. 1036 cmp calc+3
  131. 1038 bne fl15
  132. 1040 inc $fc
  133. 1042 lda $fc
  134. 1044 cmp calc+2
  135. 1046 bne fl16
  136. 1048 rts
  137. 1050 ;---------------------------------
  138. 1100 ; addition (a)+(b)=(c)
  139. 1102 ; ********************
  140. 1104 add lda #$0c ; parameteranzahl
  141. 1106 sta $fb
  142. 1108 jsr aryfnd
  143. 1110 lda #00
  144. 1112 sta $fc
  145. 1114 fl6 lda #00
  146. 1116 sta $fb
  147. 1118 fl5 lda calc
  148. 1120 ldy calc+1
  149. 1122 jsr memfac
  150. 1124 lda calc+4
  151. 1126 ldy calc+5
  152. 1128 jsr madd
  153. 1130 ldx calc+08
  154. 1132 ldy calc+09
  155. 1134 jsr facmem
  156. 1136 jsr eladd
  157. 1138 inc $fb
  158. 1140 lda $fb
  159. 1142 cmp calc+3
  160. 1144 bne fl5
  161. 1146 inc $fc
  162. 1148 lda $fc
  163. 1150 cmp calc+2
  164. 1152 bne fl6
  165. 1154 rts
  166. 1156 ;---------------------------------
  167. 1500 ; subtraktion (a)-(b)=(c)
  168. 1502 ; ***********************
  169. 1504 sub lda #$0c
  170. 1506 sta $fb
  171. 1508 jsr aryfnd
  172. 1510 lda #00
  173. 1512 sta $fc
  174. 1514 fl7 lda #00
  175. 1516 sta $fb
  176. 1518 fl8 lda calc+4
  177. 1520 ldy calc+5
  178. 1522 jsr memfac
  179. 1524 lda calc
  180. 1526 ldy calc+1
  181. 1528 jsr msub
  182. 1530 ldx calc+08
  183. 1532 ldy calc+09
  184. 1534 jsr facmem
  185. 1536 jsr eladd
  186. 1538 inc $fb
  187. 1540 lda $fb
  188. 1542 cmp calc+3
  189. 1544 bne fl8
  190. 1546 inc $fc
  191. 1548 lda $fc
  192. 1550 cmp calc+2
  193. 1552 bne fl7
  194. 1554 rts
  195. 1556 ;---------------------------------
  196. 2000 ; multiplikation (a)*(b)=(c)
  197. 2002 ; **************************
  198. 2004 mul lda #$0c
  199. 2006 sta $fb
  200. 2008 jsr aryfnd
  201. 2010 lda #00
  202. 2012 sta $8b         ; index i=0
  203. 2014 mrk11 lda #00
  204. 2016 sta $8c         ; index j=0
  205. 2018 mrk8 lda #00
  206. 2020 sta $8d         ; index k=0
  207. 2022 lda $8b
  208. 2024 sta $c1
  209. 2026 lda $8c
  210. 2028 sta $c2
  211. 2030 ldy #$08
  212. 2032 jsr offset
  213. 2034 sta $24
  214. 2036 sty $25
  215. 2038 lda #00
  216. 2040 ldx #00
  217. 2042 sta ($24),x   ; c(i,j)=0 setzen
  218. 2044 mrk6 lda $8b
  219. 2046 sta $c1
  220. 2048 lda $8d
  221. 2050 sta $c2
  222. 2052 ldy #$00
  223. 2054 jsr offset
  224. 2056 sta calc+$0c
  225. 2058 sty calc+$0d
  226. 2060 lda $fe      ; zeilen der a-matrix
  227. 2062 sta $8e
  228. 2064 lda $8d
  229. 2066 sta $c1
  230. 2068 lda $8c
  231. 2070 sta $c2
  232. 2072 ldy #$04
  233. 2074 jsr offset
  234. 2076 jsr memfac
  235. 2078 lda calc+$0c
  236. 2080 ldy calc+$0d
  237. 2082 jsr mmult
  238. 2084 lda $24
  239. 2086 ldy $25
  240. 2088 jsr madd
  241. 2090 ldx $24
  242. 2092 ldy $25
  243. 2094 jsr facmem
  244. 2096 lda $fe      ; zeilen der b-matrix
  245. 2098 cmp $8d
  246. 2100 beq mrk7
  247. 2102 inc $8d
  248. 2104 jmp mrk6     ; k-schleife
  249. 2106 mrk7 lda $fd ; spalten der b-matrix
  250. 2108 cmp $8c
  251. 2110 beq mrk9
  252. 2112 inc $8c
  253. 2114 jmp mrk8     ; j-schleife
  254. 2116 mrk9 lda $8e ; zeilen der a-matrix
  255. 2118 cmp $8b
  256. 2120 beq mrk10
  257. 2122 inc $8b
  258. 2124 jmp mrk11
  259. 2126 mrk10 rts
  260. 2128 ;---------------------------------
  261. 2200 ;skalarprodukt (a)*k=(a)
  262. 2202 ;***********************
  263. 2204 skp lda #$04
  264. 2206 sta $fb
  265. 2208 jsr aryfnd
  266. 2210 jsr varnam1
  267. 2212 jsr ptrvar   ; zeiger auf kprint[\.m*skpdt lda #00
  268. 2222 sta $fc
  269. 2224 fl26 lda #00
  270. 2226 sta $fb
  271. 2228 fl25 lda calc
  272. 2230 ldy calc+1
  273. 2232 jsr memfac
  274. 2234 lda $47
  275. 2236 ldy $48
  276. 2238 jsr mmult
  277. 2240 ldx calc
  278. 2242 ldy calc+1
  279. 2244 jsr facmem
  280. 2246 jsr eladd
  281. 2248 inc $fb
  282. 2250 lda $fb
  283. 2252 cmp calc+3
  284. 2254 bne fl25
  285. 2256 inc $fc
  286. 2258 lda $fc
  287. 2260 cmp calc+2
  288. 2262 bne fl26
  289. 2264 rts
  290. 2266 ;---------------------------------
  291. 2500 ;determinante det(a)=d
  292. 2502 ;*********************
  293. 2504 det lda #$00
  294. 2505 sta $c3
  295. 2506 lda #$04
  296. 2508 sta $fb
  297. 2509 jsr aryfnd
  298. 2510 hptdet ldx calc+2
  299. 2511 dex
  300. 2512 stx $a6
  301. 2513 determ lda #00
  302. 2514 sta $8e      ; n1=0
  303. 2516 sta $8b      ; i=0
  304. 2518 sch1 lda $8b
  305. 2520 cmp $a6      ; vergl.i=n
  306. 2522 bne cnd1a
  307. 2524 jmp cnd1
  308. 2526 cnd1a 'offmac $8b,$8b,$c3
  309. 2528 jsr memfac
  310. 2530 jsr facabs   ; betrag in fac1
  311. 2532 ldx #lc8
  312. 2534 ldy #hc8
  313. 2536 jsr facmem ; a=abs(a(i,i))
  314. 2538 ldy $8b
  315. 2540 sty $8f      ; z1=i
  316. 2542 iny
  317. 2544 sty $8d      ; k=k+1
  318. 2546 sch2 'offmac $8d,$8b,$c3
  319. 2548 jsr memfac
  320. 2550 lda #lc8
  321. 2552 ldy #hc8
  322. 2554 jsr cmpfac   ; abs(a(k,j))<=a
  323. 2556 cmp $b9bc    ; vergl. accu=1
  324. 2558 beq cnd2a
  325. 2560 lda $8d
  326. 2562 jmp cnd2
  327. 2564 cnd2a ldx #lc8
  328. 2566 ldy #hc8
  329. 2568 jsr facmem   ; a=abs(a(k,i))
  330. 2570 lda $8d
  331. 2572 sta $8f      ; z1=k
  332. 2574 cnd2 cmp $a6; vergl. k=n
  333. 2576 beq sch2e
  334. 2578 inc $8d      ; k=k+1
  335. 2580 jmp sch2     ; k-schleife
  336. 2582 sch2e lda $8f
  337. 2584 cmp $8b
  338. 2586 bne cnd1b
  339. 2588 jmp cnd1
  340. 2590 cnd1b lda #00
  341. 2592 sta $8c
  342. 2594 sch3 'offmac $8b,$8c,$c3
  343. 2596 jsr memfac
  344. 2598 ldx #lc13
  345. 2600 ldy #hc13
  346. 2602 sta $8c      ; j=0
  347. 2604 jsr facmem   ; b ablegen
  348. 2606 'offmac $8f,$8c,$c3
  349. 2608 sta $71
  350. 2610 sty $72
  351. 2612 jsr memfac   ; a(z1,j) in fac1
  352. 2614 'offmac $8b,$8c,$c3
  353. 2616 tax
  354. 2618 jsr facmem   ; a(i,j)=a(z1,j)
  355. 2620 lda #lc13
  356. 2622 ldy #hc13
  357. 2624 jsr memfac   ; b nach fac1
  358. 2626 ldx $71
  359. 2628 ldy $72
  360. 2630 jsr facmem   ; a(z1,j)=b
  361. 2632 lda $8c
  362. 2634 cmp $a6
  363. 2636 beq sch3e
  364. 2638 inc $8c
  365. 2640 jmp sch3     ; j-schleife
  366. 2642 sch3e nop    ; ende j-schleife
  367. 2644 inc $8e      ; n1=n1+1
  368. 2646 cnd1 lda #00
  369. 2648 sta $8d      ; k=0
  370. 2650 sch4 lda $8d
  371. 2652 cmp $8b
  372. 2654 bne cnd3a    ; bei k=i
  373. 2656 jmp cnd3
  374. 2658 cnd3a ldx #00
  375. 2660 null lda #00
  376. 2662 sta $61,x
  377. 2664 inx
  378. 2666 cpx #$06     ; fac1=0 setzen
  379. 2668 bne null
  380. 2670 'offmac $8b,$8b,$c3
  381. 2672 jsr cmpfac   ;vergl.fac1(0)=a(i,i)
  382. 2674 cmp #00
  383. 2676 bne cnd3b
  384. 2678 jmp cnd3
  385. 2680 cnd3b 'offmac $8b,$8b,$c3
  386. 2682 jsr memfac   ; a(i,i) divisor
  387. 2684 'offmac $8d,$8b,$c3
  388. 2686 jsr mdiv     ; a(k,i)/a(i,i)
  389. 2688 ldx #lc18
  390. 2690 ldy #hc18
  391. 2692 jsr facmem
  392. 2694 lda #00
  393. 2696 sta $8c      ; j=0
  394. 2698 sch5 'offmac $8b,$8c,$c3
  395. 2700 jsr memfac
  396. 2702 lda #lc18
  397. 2704 ldy #hc18
  398. 2706 jsr mmult
  399. 2708 'offmac $8d,$8c,$c3
  400. 2710 sta $71
  401. 2712 sty $72
  402. 2714 jsr msub
  403. 2716 ldx $71
  404. 2718 ldy $72
  405. 2720 jsr facmem   ; a(k,j)
  406. 2722 lda $8c
  407. 2724 cmp $a6      ; vergl. j=n
  408. 2726 beq sch5e
  409. 2728 inc $8c
  410. 2730 jmp sch5
  411. 2732 sch5e nop
  412. 2734 cnd3 lda $8d
  413. 2736 cmp $a6
  414. 2738 beq sch4e
  415. 2740 inc $8d
  416. 2742 jmp sch4     ; k-schleife
  417. 2744 sch4e lda $8b
  418. 2746 cmp $a6
  419. 2748 beq sch1e
  420. 2750 inc $8b
  421. 2752 jmp sch1     ; i-schleife
  422. 2754 sch1e lda #00
  423. 2756 sta $8b
  424. 2758 'offmac $8b,$8b,$c3
  425. 2760 jsr memfac
  426. 2762 ldx #lc8
  427. 2764 ldy #hc8
  428. 2766 jsr facmem   ; d=a(1,1)
  429. 2768 lda #01
  430. 2770 sta $8b
  431. 2772 sch6 'offmac $8b,$8b,$c3
  432. 2774 jsr memfac
  433. 2776 lda #lc8
  434. 2778 ldy #hc8
  435. 2780 jsr mmult    ; d*a(i,i)
  436. 2782 ldx #lc8
  437. 2784 ldy #hc8
  438. 2786 jsr facmem
  439. 2788 lda $8b
  440. 2790 cmp $a6
  441. 2792 beq sch6e
  442. 2794 inc $8b
  443. 2796 jmp sch6
  444. 2798 sch6e nop
  445. 2799 ror $8e
  446. 2800 bcc cnd5
  447. 2802 lda $66
  448. 2803 cmp #$80     ; bereits negativ
  449. 2804 lda #$01
  450. 2805 sta $66
  451. 2806 bcs cnd5
  452. 2807 lda #$ff
  453. 2808 sta $66
  454. 2809 cnd5 lda $c3
  455. 2810 cmp #$00
  456. 2811 bne detfin
  457. 2812 jsr varnam1
  458. 2813 jsr ptrvar   ; variable such./anl.
  459. 2814 ldx $47
  460. 2816 ldy $48
  461. 2818 jsr facmem
  462. 2820 detfin rts
  463. 2822 ;---------------------------------
  464. 2900 ; inverse matrix inv(a)=b
  465. 2902 ; ***********************
  466. 2904 inv lda #$0c
  467. 2908 sta $fb
  468. 2910 jsr aryfnd
  469. 2920 ldy #00
  470. 2922 loop1 lda calc,y
  471. 2924 pha
  472. 2926 iny
  473. 2928 cpy $fb
  474. 2930 bcc loop1
  475. 2932 beq loop1
  476. 2934 jsr equiv
  477. 2939 ldy #$0c
  478. 2940 loop2 pla
  479. 2942 sta calc,y
  480. 2944 dey
  481. 2948 bpl loop2
  482. 2950 lda #$04
  483. 2952 sta $c3
  484. 2954 jsr hptdet
  485. 2955 jsr pruef    ; umkehrbarkeit prfn.
  486. 2956 lda #$bc     ; lo adresse von 1
  487. 2958 ldy #$b9     ; hi    "
  488. 2960 jsr mdiv
  489. 2962 ldx #lc23
  490. 2964 ldy #hc23
  491. 2966 jsr facmem
  492. 3011 ldx calc[170]2
  493. 3012 dex
  494. 3014 txa
  495. 3016 sta $fd       ; n
  496. 3020 sta $8f
  497. 3024 dec $8f       ; n[171]1
  498. 3028 lda #00
  499. 3032 zwg11 sta $8b ; index i[178]0
  500. 3036 lda #00
  501. 3040 zwg9 sta $8c  ; index j[178]0
  502. 3044 lda #00
  503. 3048 zwg6 sta $8d  ; index k[178]0
  504. 3052 lda #00
  505. 3056 zwg4 sta $8e  ; index l[178]0
  506. 3060 lda #00
  507. 3064 sta $c3
  508. 3068 lda $8d
  509. 3072 sta $c1
  510. 3076 cmp $8c       ; c[171]flag bei [177][178]
  511. 3080 bcc zwg1
  512. 3084 inc $c1       ; k[170](k[177][178]j)
  513. 3088 zwg1 lda $8e
  514. 3092 sta $c2
  515. 3096 cmp $8b
  516. 3100 bcc zwg2
  517. 3104 inc $c2       ; l[170](l[177][178]i)
  518. 3108 zwg2 'offmac $c1,$c2,$c3
  519. 3112 jsr memfac
  520. 3116 lda $8d
  521. 3120 sta $c1
  522. 3124 lda $8e
  523. 3128 sta $c2
  524. 3132 ldy #$08
  525. 3136 jsr offset
  526. 3140 jsr facmem    ; b(k,l) ablegen
  527. 3144 lda $8e
  528. 3148 cmp $8f
  529. 3152 beq zwg3
  530. 3156 inc $8e
  531. 3158 lda $8e
  532. 3160 jmp zwg4      ; l[171]schle[139]e
  533. 3164 zwg3 lda $8d
  534. 3168 cmp $8f
  535. 3172 beq zwg5
  536. 3176 inc $8d
  537. 3178 lda $8d
  538. 3180 jmp zwg6      ; k[171]schle[139]e
  539. 3182 zwg5 lda #00
  540. 3183 cmp $8f
  541. 3184 bne det1      ; det.index [177]1
  542. 3188 jmp det2
  543. 3190 det1 ldy #00
  544. 3192 loopa lda $8b,y
  545. 3194 pha
  546. 3196 iny
  547. 3198 cpy #$05
  548. 3200 bne loopa
  549. 3212 lda $fd
  550. 3214 pha
  551. 3218 lda $8f       ; det.index reduz.
  552. 3222 sta $a6
  553. 3226 lda #$08
  554. 3230 sta $c3       ; offset f.determin.
  555. 3234 jsr determ
  556. 3250 pla           ; indicees zurueck
  557. 3252 sta $fd
  558. 3254 ldy #$04
  559. 3256 loopb pla
  560. 3258 sta $8b,y
  561. 3260 dey
  562. 3262 bpl loopb
  563. 3284 det2 clc
  564. 3285 lda $8b
  565. 3286 adc $8c
  566. 3288 r[176]
  567. 3292 bcc zwg7
  568. 3294 lda $66
  569. 3295 cmp #$80      ; bereits negativ,
  570. 3296 lda #$01      ; dann [185]itiv
  571. 3297 lda #$01
  572. 3298 sta $66
  573. 3299 bcs zwg7
  574. 3300 lda #$ff
  575. 3304 sta $66       ; fac negativ
  576. 3308 zwg7 lda $8b
  577. 3312 sta $c1
  578. 3316 lda $8c
  579. 3320 sta $c2
  580. 3324 lda #$04
  581. 3328 sta $c3
  582. 3332 'offmac $c1,$c2,$c3
  583. 3336 jsr facmem
  584. 3340 lda $8c
  585. 3344 cmp $fd
  586. 3348 beq zwg8
  587. 3352 inc $8c
  588. 3354 lda $8c
  589. 3356 jmp zwg9
  590. 3360 zwg8 lda $8b
  591. 3364 cmp $fd
  592. 3368 beq zwg10
  593. 3372 inc $8b
  594. 3374 lda $8b
  595. 3376 jmp zwg11
  596. 3380 zwg10 nop
  597. 3381 lda #$0c
  598. 3382 sta $fb
  599. 3383 ldy #00
  600. 3384 loop3 lda calc,y
  601. 3386 pha
  602. 3388 iny
  603. 3390 cpy $fb
  604. 3392 bcc loop3
  605. 3394 beq loop3
  606. 3400 ldy #00
  607. 3402 loop6 lda calc[170]4,y
  608. 3404 sta calc,y
  609. 3406 lda calc[170]8,y
  610. 3408 sta calc[170]4,y
  611. 3410 iny
  612. 3412 cpy #$04
  613. 3414 bcc loop6
  614. 3420 jsr equiv
  615. 3424 ldy #$0c
  616. 3426 loop4 pla
  617. 3428 sta calc,y
  618. 3430 dey
  619. 3432 bpl loop4
  620. 3440 lda #lc23     ; zeiger auf 1[173]det
  621. 3442 sta $47
  622. 3444 lda #hc23
  623. 3446 sta $48
  624. 3450 ldy #00
  625. 3452 loop7 lda calc[170]8,y
  626. 3454 sta calc,y
  627. 3456 iny
  628. 3458 cpy #$04
  629. 3460 bcc loop7
  630. 3468 jsr skpdt
  631. 3470 rts
  632. 3472 ;
  633. 3474 pruef lda $61
  634. 3476 cmp #$0a
  635. 3478 bcs okey
  636. 3480 'text text1
  637. 3486 jmp [135]y      ; [135]y[171]modus
  638. 3488 okey rts
  639. 3500 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  640. 5100 ; variab[195]namen lesen
  641. 5102 ; [172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172]
  642. 5104 varnam1 lda #00
  643. 5106 sta $a5
  644. 5108 ;
  645. 5110 varnam2 jsr komma
  646. 5112 jsr chr[203]t    ; 1.zeichen ho[195]
  647. 5114 sta $45       ; und merken
  648. 5116 jsr chr[161]    ; 2.zeichen ho[195]
  649. 5118 beq z[128]     ; zei[195][128]e
  650. 5120 cmp #$2c      ; auf komma pruefen
  651. 5122 bne spr1     ; nein, naechstes z.
  652. 5124 z[128] lda #0
  653. 5126 sta $46       ; 2. zeichen null
  654. 5128 dec $7a
  655. 5130 jmp [128]
  656. 5132 spr1 sta $46  ; 2. zeichen merken
  657. 5134 [128] inc $7a   ; programmzeiger [170]1
  658. 5136 bne less
  659. 5138 inc $7b
  660. 5140 less rts
  661. 5142 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  662. 5200 ; array[171]kopf suchen
  663. 5202 ; [172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172]
  664. 5204 ary[165]d jsr varnam1
  665. 5206 jmp vcnt
  666. 5208 arr jsr varnam2
  667. 5210 vcnt ldx $2f  ; zeiger arraytabelle
  668. 5212 lda $30
  669. 5214 addr4 stx $5f ; zeiger merken
  670. 5216 sta $60
  671. 5218 cmp $32
  672. 5220 ldy #$00
  673. 5222 lda ($5f),y   ; name arraytabelle
  674. 5224 iny
  675. 5226 cmp $45       ; vergleich mit name
  676. 5228 bne addr2
  677. 5230 lda $46
  678. 5232 cmp ($5f),y   ; 2. buchstabe
  679. 5234 beq addr3
  680. 5236 addr2 iny
  681. 5238 lda ($5f),y
  682. 5240 clc
  683. 5242 adc $5f
  684. 5244 tax
  685. 5246 iny
  686. 5248 lda ($5f),y
  687. 5250 adc $60
  688. 5252 addr3 bcc addr4
  689. 5254 ;
  690. 5256 ; adressen und indizes ablegen
  691. 5258 ; [172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172]
  692. 5260 jsr ary[161]   ; zeiger n. element
  693. 5262 clc
  694. 5264 adc #4
  695. 5266 ldx $a5
  696. 5268 sta calc,x   ; n.array adresse lo
  697. 5270 inx
  698. 5272 lda $59
  699. 5274 bcc fl1
  700. 5276 inc $59
  701. 5278 fl1 lda $59
  702. 5280 sta calc,x   ; n.array adresse hi
  703. 5282 ldy #01
  704. 5284 lda ($58),y  ; anzahl der spalten
  705. 5286 inx
  706. 5288 sta calc,x
  707. 5290 ldy #03
  708. 5292 lda ($58),y  ; anzahl der zei[195]
  709. 5294 inx
  710. 5296 sta calc,x
  711. 5298 inx
  712. 5300 stx $a5
  713. 5302 txa
  714. 5304 cmp $fb
  715. 5306 bne arr
  716. 5308 rts
  717. 5310 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  718. 5400 ;
  719. 5402 ; ink[143]entiert element-adressen
  720. 5404 ; [172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172]
  721. 5406 eladd clc
  722. 5408 lda calc
  723. 5410 adc #05
  724. 5412 sta calc
  725. 5414 bcc fl2
  726. 5416 inc calc[170]1
  727. 5418 fl2 clc
  728. 5420 lda calc[170]4
  729. 5422 adc #05
  730. 5424 sta calc[170]4
  731. 5426 bcc fl3
  732. 5428 inc calc[170]5
  733. 5430 fl3 clc
  734. 5432 lda calc[170]8
  735. 5434 adc #05
  736. 5436 sta calc[170]8
  737. 5438 bcc fl4
  738. 5440 inc calc[170]9
  739. 5442 fl4 rts
  740. 5446 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  741. 6000 ;berechnet offset des elementes mit
  742. 6002 ;index $c1,$c2  calc[178]startadresse
  743. 6004 ;[172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172][172]
  744. 6006 offset ldx calc[170]2,y
  745. 6008 dex
  746. 6010 stx $fd
  747. 6012 ldx calc[170]3,y
  748. 6014 dex
  749. 6016 stx $fe
  750. 6018 lda #00
  751. 6020 sta $fb
  752. 6022 sta $a5         ; offset[171]resultat
  753. 6024 adr4 lda #00
  754. 6026 sta $fc
  755. 6028 adr2 lda $fc
  756. 6030 cmp $c1
  757. 6032 bne adr5
  758. 6034 lda $fb
  759. 6036 cmp $c2
  760. 6038 bne adr5
  761. 6040 jmp found
  762. 6042 adr5 clc
  763. 6044 lda $a5
  764. 6046 adc #5
  765. 6048 sta $a5
  766. 6050 lda $fc
  767. 6052 cmp $fe
  768. 6054 beq adr1
  769. 6056 inc $fc
  770. 6058 jmp adr2
  771. 6060 adr1 lda $fb
  772. 6062 cmp $fd
  773. 6064 beq adr3
  774. 6066 inc $fb
  775. 6068 jmp adr4
  776. 6070 adr3 lda #$12 ; bad subscript
  777. 6072 jmp $a43a     ; fehlerausgabe
  778. 6074 found clc
  779. 6076 lda calc,y
  780. 6078 adc $a5
  781. 6080 ldx calc[170]1,y
  782. 6082 bcc adr6
  783. 6084 inx
  784. 6086 adr6 stx $c4
  785. 6088 ldy $c4
  786. 6089 tax
  787. 6090 rts
  788. 6092 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  789. 6200 titel lda #$93 ; [156] home
  790. 6202 jsr chrout
  791. 6204 jsr scrtch
  792. 6206 'curs[176] 0,0
  793. 6208 'text text10
  794. 6210 'text text11
  795. 6212 'text text12
  796. 6218 'text text13
  797. 6220 'curs[176] 5,1
  798. 6224 'text text14
  799. 6226 'curs[176] 7,1
  800. 6228 'text text15
  801. 6230 'curs[176] 9,1
  802. 6232 'text text16
  803. 6234 'curs[176] 11,1
  804. 6236 'text text17
  805. 6238 'curs[176] 13,1
  806. 6240 'text text18
  807. 6242 'curs[176] 15,1
  808. 6244 'text text19
  809. 6246 'curs[176] 17,1
  810. 6248 'text text20
  811. 6250 'curs[176] 19,1
  812. 6252 'text text21
  813. 6254 'curs[176] 21,17
  814. 6256 'text text22
  815. 6278 'curs[176] 21,1
  816. 6280 jsr [135]y
  817. 6282 rts
  818. 6284 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  819. 7000 text1 .[198] "matrix ist nicht umkehrbar": .byt 0
  820. 7010 text10 .[198] "lenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlen": .byt 0
  821. 7012 text11 .[198] " matrix - express, dr.-ing. uwe christ  ": .byt 0
  822. 7014 text12 .[198] "lenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlenlen": .byt 0
  823. 7016 text13 .[198] "basic erweiterung fuer matrizenrechnung": .byt 0
  824. 7018 text14 .[198] "syntax der neuen befehle:": .byt 0
  825. 7020 text15 .[198] "@equ,x,y        (y)=(x)": .byt 0
  826. 7022 text16 .[198] "@add,x,y,z      (z)=(x)+(y)": .byt 0
  827. 7024 text17 .[198] "@sub,x,y,z      (z)=(x)-(y)": .byt 0
  828. 7026 text18 .[198] "@skp,x,k        (x)=k*(x)": .byt 0
  829. 7028 text19 .[198] "@mul,x,y,z      (z)=(x)*(y)": .byt 0
  830. 7030 text20 .[198] "@det,x,d         d =det(x)": .byt 0
  831. 7032 text21 .[198] "@inv,x,y,z      (z)=(x)^-1": .byt 0
  832. 7034 text22 .[198] "(y)=adj(x)": .byt 0
  833.